Spring Boot: 1.5.10.RELEASE
Spring Cloud: Dalston.SR5
Eureka 注册中心管理页面经常可以看到
EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY’RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.
的红色提示。
Eureka 自我保护机制
默认情况下,如果 Eureka Server 在一定时间内(默认 90 秒)没有接收到某个 Eureka Client 的心跳,Eureka Server 将会注销该微服务客户端实例。但是如果是网络大面积突然发生故障(网络抖动)导致 Eureka Server 和 Eureka Client 之间无法正常通信,此时 Eureak Client 实例实际是健康的,不应该被注销。
Eureka 自我保护机制就是当 Eureka Server 短时间内丢失大量的 Eureka Client ,那么将进入自我保护模式,Eureka Server 将会保护已注册的服务列表,不再删除服务列表中的服务,当网络恢复时,Eureka Server 将自动退出自我保护模式
Eureka 自我保护机制就是 Eureka 的设计哲学体现:Eureka 依据分布式系统 CAP 理论中 AP 原则,优先保证可用性和分区容错性,而不追求一致性
关闭 Eureka 自我保护机制
在 Eureka Server 中可以通过将 eureka.server.enable-self-preservation 设置为 false 关闭自我保护机制。
不推荐关闭 Eureka 的自我保护机制